The disclosure relates generally to reproducible stochastic rounding for out of order processors.
In general, machine learning and neural network applications require a method of rounding results using a random value to determine if a fractional part of an intermediate result should cause an increment (rounding up) or truncation (rounding down) of the final result. This becomes a problem for contemporary implementations of these applications when it is necessary to generate reproducible results, particularly considering today's out of order processors. Reproducible results are required for many reasons, including hardware validation during initial system test. For example, if a same code is run on a different processor, it is necessary that the two processors generate the same final result.